home *** CD-ROM | disk | FTP | other *** search
/ Chip 2003 October / Chip Ekim 2003.iso / prog / web / xtreeme / setup.exe / {app} / Scripts / menu_ns4.js < prev    next >
Encoding:
Text File  |  2003-08-03  |  14.3 KB  |  517 lines

  1. // script generated by Xtreeme SiteXpert
  2. // sitemap and search engine creator
  3. // http://www.xtreeme.com/sitexpert
  4. // Copyright(C) 2001-2002 Xtreeme GmbH
  5.  
  6. #define makeTransparent f01
  7. #define showDelayed f02
  8. #define createMenuItem f03
  9. #define setRealWidth f04
  10. #define createPopupFromCode f05
  11. #define closePopup f06
  12. #define absToRel f07
  13. #define openPopup f08
  14. #define setPopupHeight f09
  15. #define scrollPopup f10
  16. #define isChildOfActivePopup f13
  17. #define onPopupOver f14
  18. #define onPopupOut f15
  19. #define getBrowserRect f17
  20. #define calcClientRect f18
  21. #define getClientRect f19
  22. #define onItemClick f20
  23. #define onNextScroll f21
  24. #define onItemOver f22
  25. #define onItemOut f23
  26. #define expandMenu exM
  27. #define collapseMenu coM
  28. #define onDocClick f28
  29. #define initializeMenu f29
  30. #define addNewEvent f30
  31. #define initializeAll f31
  32. #define errorTrap f32
  33. #define getAbsolutePath f33
  34. #define removeHighlight f34
  35.  
  36. #define popupRightPad v01
  37. #define curPopupWidth v02
  38. #define expandArrowSrc v03
  39. #define ownerMenu v04
  40. #define highlightColor v05
  41. #define normalColor v06
  42. #define highlightBgColor v07
  43. #define normalBgColor v08
  44. #define levelAttribs v09
  45. #define popupOpenHeight v10
  46. #define bBitmapPopups v11
  47. #define arrayName v12
  48. #define arrayItem v13
  49. #define expandedWnd v14
  50. #define popupRect v15
  51. #define browserRect v16
  52. #define activePopup v17
  53. #define popupFrame v18
  54. #define sepFrame v19
  55. #define openSameFrame v20
  56. #define imgFolder v21
  57. #define popAlign v22
  58. #define popupWidth v23
  59. #define contentFrame v24
  60. #define bBitmapScheme v25
  61. #define itemText v26
  62. #define itemLink v27
  63. #define bottomImgHeight v28
  64. #define scrollTimeout v29
  65. #define popupArray v30
  66. #define popupHeight v31
  67. #define nmenu q
  68.  
  69. function getAbsolutePath(p)
  70. {
  71.     if(p&&p.indexOf(':/')==-1&&p.indexOf(':\\')==-1&&p.indexOf('/')!=0) return unescape(absPath)+p;
  72.     else return p;
  73.  
  74. }
  75.  
  76. function addLoadHandler(lh)
  77. {
  78.     if (!document.loadHandlers)
  79.     {
  80.         document.loadHandlers=new Array();
  81.         document.loadHandlers[0]=lh;
  82.         document.lastLoadHandler=0;
  83.     }
  84.     else
  85.     {
  86.         document.lastLoadHandler++;
  87.         document.loadHandlers[document.lastLoadHandler]=lh;
  88.     }
  89. }
  90. addLoadHandler ('initializeMenu');
  91. window.onload=initializeAll;
  92. function errorTrap(){return true;}
  93. window.onerror=errorTrap;
  94.  
  95. var nmenu;var nmn;for(nmn=1;nmn<=lastm;nmn++){nmenu=eval('window.m'+nmn);if(nmenu)break;}
  96. iconTag="<IMG SRC=\'";
  97. iconTag+=getAbsolutePath(nmenu.imgFolder)+"/"+nmenu.fnm+"ia.gif\' BORDER=0 WIDTH="+nmenu.iconSize+" HEIGHT="+nmenu.iconSize+" HSPACE="+(5+nmenu.bord)+" ALIGN=RIGHT>";
  98.  
  99. var resizeRef=(nmenu.sepFrame&&!nmenu.openSameFrame)?parent:window;
  100. var startWidth=resizeRef.innerWidth;
  101. var startHeight=resizeRef.innerHeight;
  102. resizeRef.onresize=function()
  103. {
  104.     if(resizeRef.innerWidth==startWidth && resizeRef.innerHeight==startHeight)return;
  105.     resizeRef.location.reload();
  106. }
  107.  
  108. function createMenuItem(nmenu,popup,itemLink,itemText,popupArray,levelAttribs,bLast,popupHeight)
  109. {
  110.     var itemWnd;
  111.     eval("itemWnd=new Layer(nmenu.popupWidth,popup)");
  112.  
  113.     var fnt=levelAttribs[6];
  114.     var cl=fnt.indexOf(',');
  115.     if(cl!=-1)fnt=fnt.substring(0,cl);
  116.  
  117.     var itemHoverText="<font style='font-size:"+levelAttribs[0]+";width:"+(nmenu.popupWidth-nmenu.vertSpace*2-nmenu.bord*2)+"' color="+levelAttribs[5]+" face='"+fnt+"'>"+itemText+"</font>";
  118.     var targetFr="";
  119.     if (itemLink)
  120.     {
  121.         var startPos=itemText.indexOf('<!--');
  122.         if(nmenu.sepFrame&&nmenu.openSameFrame)targetFr="target='"+nmenu.cntFrame+"'";
  123.         if (startPos!=-1)
  124.         {
  125.             var endPos = itemText.indexOf('-->',startPos);
  126.             targetFr = "target='"+itemText.substring (startPos+4,endPos)+"'";
  127.         }
  128.     }
  129.     if(itemLink)itemHoverText="<a href=\""+itemLink+"\" "+targetFr+" style='width:"+(nmenu.popupWidth-nmenu.vertSpace*2-nmenu.bord*2)+";text-decoration:none'>"+itemHoverText+"</a>";
  130.     if(levelAttribs[1])itemHoverText=itemHoverText.bold();
  131.     if(levelAttribs[2]&&itemHoverText.italic)itemHoverText=itemHoverText.italic();
  132.     if(popupArray)itemHoverText=iconTag+itemHoverText;
  133.  
  134.     itemText="<font style='font-size:"+levelAttribs[0]+";width:"+(nmenu.popupWidth-nmenu.vertSpace*2-nmenu.bord*2)+"' color="+levelAttribs[3]+" face='"+fnt+"'>"+itemText+"</font>";
  135.     if(itemLink)itemText="<a href=\""+itemLink+"\" "+targetFr+" style='width:"+(nmenu.popupWidth-nmenu.vertSpace*2-nmenu.bord*2)+";text-decoration:none'>"+itemText+"</a>";
  136.     if(levelAttribs[1])itemText=itemText.bold();
  137.     if(levelAttribs[2]&&itemText.italic)itemText=itemText.italic();
  138.     if(popupArray)itemText=iconTag+itemText;
  139.  
  140.     itemWnd.captureEvents(Event.CLICK);
  141.     itemWnd.onclick=onItemClick;
  142.     addNewEvent(itemWnd,"mouseout",onItemOut,false);
  143.     addNewEvent(itemWnd,"mouseover",onItemOver,false);
  144.     itemWnd.document.write(itemText);
  145.     itemWnd.document.close();
  146.     itemWnd.document.tags.A.textDecoration="none";
  147.     itemWnd.document.tags.FONT.width=nmenu.popupWidth-nmenu.vertSpace*2-nmenu.bord*2;
  148.     itemWnd.document.tags.FONT.fontSize=levelAttribs[0];
  149.     itemWnd.pageX=nmenu.vertSpace+nmenu.bord;
  150.     if (popupArray)itemWnd.popupArray=popupArray;
  151.     itemWnd.owner=popup;
  152.     itemWnd.url=getAbsolutePath(itemLink);
  153.     itemWnd.pageY=popupHeight+nmenu.vertSpace;
  154.     itemWnd.dispText=itemText;
  155.     itemWnd.bHighlighted=0;
  156.     itemWnd.dispHoverText=itemHoverText;
  157.     itemWnd.bgColor=levelAttribs[4];
  158.     itemWnd.clip.top=-nmenu.vertSpace;
  159.     itemWnd.clip.left=-nmenu.vertSpace;
  160.     var newHeight=itemWnd.document.height+2*nmenu.vertSpace;
  161.     itemWnd.resizeTo(nmenu.popupWidth-2*nmenu.bord,newHeight);
  162.     itemWnd.visibility="inherit";
  163.     return newHeight;
  164. }
  165.  
  166. function createPopupFromCode(nmenu,arrayName,level)
  167. {
  168.     var popupName=arrayName+"popup";
  169.     var popup=eval("nmenu.popupFrame.document."+popupName);
  170.     if (popup)return popup;
  171.     var levelAttribs;
  172.     var nm=nmenu;
  173.     if (level > nmenu.maxlev) {levelAttribs = eval ("nm.lev" + nmenu.maxlev) ;} else {levelAttribs = eval ("nm.lev" + level) ;}
  174.     eval("nmenu.popupFrame.document."+popupName+"=new Layer(nmenu.popupWidth,nmenu.popupFrame)");
  175.     popup=eval("nmenu.popupFrame.document."+popupName);
  176.     popup.level=level;
  177.     popup.wid=popupName;
  178.     popup.highlightColor=levelAttribs[5];
  179.     popup.normalColor=levelAttribs[3];
  180.     popup.highlightBgColor=levelAttribs[7];
  181.     popup.normalBgColor=levelAttribs[4];
  182.     popup.zIndex=maxZ;
  183.     popup.bgColor=nmenu.bord?nmenu.borderCol:levelAttribs[4];
  184.     popup.nmenu=nmenu;
  185.     addNewEvent(popup,"mouseout",onPopupOut,false);
  186.     addNewEvent(popup,"mouseover",onPopupOver,false);
  187.     var popupHeight=nmenu.bord;
  188.     var array=eval(arrayName);
  189.     var arrayItem;
  190.     var popupText="";
  191.     for(arrayItem=0;arrayItem<array.length/3;arrayItem++)
  192.     {
  193.         var popupArray=(array[arrayItem*3+2])?(arrayName+"_"+parseInt(arrayItem+1)):null;
  194.         popupHeight+=createMenuItem(nmenu,popup,array[arrayItem*3+1],array[arrayItem*3],popupArray,levelAttribs,(arrayItem == array.length/3-1),popupHeight);
  195.         popupHeight+=nmenu.sep;
  196.     }
  197.     popupHeight+=nmenu.bord;
  198.     popup.resizeTo(nmenu.popupWidth,popupHeight);
  199.     popup.popupHeight=popupHeight;
  200.     return popup;
  201. }
  202.  
  203. function closePopup(nmenu,popupId)
  204. {
  205.     if(popupId.indexOf('_')==-1){var hideWnd=eval("nmenu.popupFrame.document.HideItem");if(hideWnd)hideWnd.visibility='show';}
  206.     var popup=eval("nmenu.popupFrame.document."+popupId);
  207.     if (popup)
  208.     {
  209.         if (popup.expandedWnd) closePopup (nmenu,popup.expandedWnd.wid);
  210.         popup.visibility="hide";
  211.     }
  212.     if (nmenu.activePopup && nmenu.activePopup.wid==popupId) nmenu.activePopup=null;
  213. }
  214.  
  215. function absToRel(rect,refx,refy)
  216. {
  217.     var retval=new rct(rect.left-refx,rect.top-refy,rect.right-refx,rect.bottom-refy);
  218.     return retval;
  219. }
  220.  
  221. function removeHighlight (popup,actEl)
  222. {
  223.     var items=popup.layers;
  224.     var i=0;
  225.     for (;i<items.length;i++)if(actEl!=items[i]&&(!items[i].id||items[i].id.indexOf("scroll")==-1))
  226.     {
  227.         items[i].color = popup.normalColor;
  228.         items[i].bgColor = popup.normalBgColor;
  229.         if(mswnd && items[i].bHighlighted)
  230.         {
  231.             items[i].document.write(items[i].dispText);
  232.             items[i].document.close();
  233.             items[i].bHighlighted=0;
  234.         }
  235.     }
  236. }
  237.  
  238. function openPopup(nmenu,popup,x,y,bDontMove)
  239. {
  240.     if(popup.wid.indexOf('_')==-1){var hideWnd=eval("nmenu.popupFrame.document.HideItem");if(hideWnd)hideWnd.visibility='hide';}
  241.     popup.left=x;
  242.     popup.top=y;
  243.     popup.visibility="show";
  244.     var browserRect=getBrowserRect(nmenu.popupFrame);
  245.     if(x+nmenu.popupWidth>browserRect.right)popup.left=Math.max(0,browserRect.right-nmenu.popupWidth-5-popup.level*20);
  246.     if(y+popup.popupHeight>browserRect.bottom)popup.top=Math.max(0,browserRect.bottom-popup.popupHeight-5);
  247.     removeHighlight (popup,null);
  248. }
  249.  
  250. function isChildOfActivePopup(nmenu,popup)
  251. {
  252.     var wnd=nmenu.activePopup;
  253.     while(wnd)
  254.     {
  255.         if (wnd.wid==popup.wid)
  256.             return true;
  257.         wnd=wnd.expandedWnd;
  258.     }
  259.     return false;
  260. }
  261.  
  262. function onPopupOver()
  263. {
  264.     var nmenu=this.nmenu;
  265.     if (nmenu.activePopup && isChildOfActivePopup (nmenu,this)) clearTimeout(nmenu.activePopupTimeout);
  266. }
  267.  
  268. function onPopupOut()
  269. {
  270.     var nmenu=this.nmenu;
  271.     onPopupOutImpl(nmenu,this);
  272. }
  273.  
  274. function onPopupOutImpl(nmenu,popup)
  275. {
  276.     if (nmenu.mout && nmenu.activePopup && isChildOfActivePopup (nmenu,popup))
  277.     {
  278.         if (nmenu.activePopupTimeout) clearTimeout (nmenu.activePopupTimeout);
  279.         nmenu.activePopupTimeout=setTimeout("closePopup("+nmenu.name+",'"+nmenu.activePopup.wid+"');", nmenu.closeDelay);
  280.     }
  281. }
  282.  
  283. function rct(left,top,right,bottom)
  284. {
  285.     this.left=left;
  286.     this.top=top;
  287.     this.right=right;
  288.     this.bottom=bottom;
  289. }
  290.  
  291. function getBrowserRect(doc)
  292. {
  293.     var left=doc.pageXOffset;
  294.     var top=doc.pageYOffset;
  295.     var right=left+doc.innerWidth;
  296.     var bottom=top+doc.innerHeight;
  297.     var retval=new rct(left,top,right,bottom);
  298.     return retval;    
  299. }
  300.  
  301. function getClientRect(wnd)
  302. {
  303.     var left=wnd.pageX;
  304.     var top=wnd.pageY;
  305.     var right=left+wnd.document.width;
  306.     var bottom=top+wnd.document.height;
  307.     var retval=new rct(left,top,right,bottom);
  308.     return retval;
  309. }
  310.  
  311. function findFr(wn,fr)
  312. {
  313.     if(wn.frames)
  314.     {
  315.         for(var i=0;i<wn.frames.length;i++)
  316.         {
  317.             if(wn.frames[i].name==fr)return wn.frames[i];
  318.             var ret=findFr(wn.frames[i],fr);
  319.             if(ret)return ret;
  320.         }
  321.     }
  322.     return null;
  323. }
  324.  
  325. function onItemClick()
  326. {
  327.     var item=this;
  328.     var nmenu=this.owner.nmenu;
  329.     if (item.url)
  330.     {
  331.         var trgFrame=nmenu.cntFrame;
  332.         var startPos=item.dispText.indexOf('<!--');
  333.         if (startPos!=-1)
  334.         {
  335.             var endPos = item.dispText.indexOf('-->',startPos);
  336.             trgFrame = item.dispText.substring (startPos+4,endPos);
  337.         }
  338.         if(trgFrame)
  339.         {
  340.             if (trgFrame=="_blank") window.open (item.url);
  341.             else if (trgFrame=="_top") window.top.location.href=item.url;
  342.             else if (trgFrame.indexOf('_')==0) parent.location.href=item.url;
  343.             else
  344.             {
  345.                 var fr=findFr(window.top,trgFrame);
  346.                 if(fr)fr.location.href=item.url;
  347.                 else window.location.href=item.url;
  348.             }
  349.         }
  350.         else
  351.         {
  352.             var find=item.url.indexOf("javascript:");
  353.             if (find!=-1)
  354.                 eval(item.url.substring(find));
  355.             else
  356.             {
  357.                 var mt=item.url.indexOf("mailto:");
  358.                 if(mt!=-1)window.location=item.url.substring(mt);
  359.                 else nmenu.targetFrame.location=item.url;
  360.             }
  361.         }
  362.         if(nmenu.activePopup)closePopup(nmenu,nmenu.activePopup.id);
  363.     }
  364.     return false;
  365. }
  366.  
  367. function onItemOver()
  368. {
  369.     var item=this;
  370.     var nmenu=this.owner.nmenu;
  371.     if (item.owner.expandedWnd)
  372.     {
  373.         closePopup(nmenu,item.owner.expandedWnd.wid);
  374.     }
  375.     if (item.url&&item.url.indexOf("javascript:")==-1)
  376.         window.status=item.url;
  377.     else
  378.         window.status="";
  379.     
  380.     removeHighlight (item.owner,item);
  381.     item.bgColor=item.owner.highlightBgColor;
  382.  
  383.     if(mswnd)
  384.     {
  385.         item.document.write(item.dispHoverText);
  386.         item.document.close();
  387.         item.bHighlighted=1;
  388.     }
  389.     if (item.popupArray)
  390.     {
  391.         var rect=getClientRect(item);
  392.         var x=item.pageX+nmenu.popupWidth-nmenu.levelOffset;//right-nmenu.levelOffset;
  393.         var y=rect.top;
  394.         var popup=createPopupFromCode(nmenu,item.popupArray,item.owner.level+1);
  395.         item.owner.expandedWnd=popup;
  396.         openPopup(nmenu,popup,x,y,false);
  397.     }
  398. }
  399.  
  400. function onItemOut()
  401. {
  402.     var item=this;
  403.     var nmenu=this.owner.nmenu;
  404.     window.status="";
  405. }
  406.  
  407. function expandMenu(nmenu,popupId,refWnd,e,ml,mt,mr,mb)
  408. {
  409.     if(!docLoaded)return;
  410.     clearTimeout(nmenu.activePopupTimeout);
  411.     if (nmenu.activePopup&&nmenu.activePopup.wid!=popupId+"popup")
  412.         closePopup(nmenu,nmenu.activePopup.wid);
  413.     if(popupId=='none')return;
  414.     var rect;
  415.     if(refWnd=='coords'){rect=getClientRect(document.layers[nmenu.name+'tln']);rect.left=rect.left+ml;rect.top=rect.top+mt;rect.right=rect.left+mr;rect.bottom=rect.top+mb;}else{rect=getClientRect(document.layers[popupId+"top"]);}
  416.     var x;
  417.     var y;
  418.     if(nmenu.menuHorizontal)
  419.     {
  420.         x=rect.left;
  421.         y=rect.bottom+nmenu.popupOffset;
  422.     }
  423.     else
  424.     {
  425.         x=rect.right+nmenu.popupOffset;
  426.         y=rect.top;
  427.     }
  428.     if(nmenu.sepFrame&&!nmenu.openSameFrame)
  429.     {
  430.         var brRect=getBrowserRect(nmenu.popupFrame);
  431.         var wRect=getBrowserRect(window);
  432.         switch (nmenu.menuPos)
  433.         {
  434.         case 0:
  435.             x=brRect.left+nmenu.popupOffset;
  436.             y+=brRect.top-wRect.top;
  437.             break;
  438.         case 1:
  439.             x=brRect.right-nmenu.popupOffset;
  440.             y+=brRect.top-wRect.top;
  441.             break;
  442.         case 2:
  443.             x+=brRect.left-wRect.left;
  444.             y=brRect.top+nmenu.popupOffset;
  445.             break;
  446.         case 3:
  447.             x+=brRect.left-wRect.left;
  448.             y=brRect.bottom-nmenu.popupOffset;
  449.             break;
  450.         }
  451.     }
  452.     var popup=createPopupFromCode(nmenu,popupId,0);
  453.     openPopup(nmenu,popup,x,y,true);
  454.     nmenu.activePopup=popup;
  455. }
  456.  
  457. function collapseMenu(nmenu,popupId)
  458. {
  459.     if(!docLoaded)return;
  460.     var popup=eval("nmenu.popupFrame.document."+popupId+"popup");
  461.     if(popup)onPopupOutImpl(nmenu,popup);
  462. }
  463.  
  464. function expandMenuNS(nmenu,popupId,e)
  465. {
  466.     expandMenu(nmenu,popupId,e);
  467. }
  468.  
  469. function collapseMenuNS(nmenu,popupId)
  470. {
  471.     collapseMenu(nmenu,popupId);
  472. }
  473.  
  474. function onDocClick()
  475. {
  476.     var nmn;
  477.     for(nmn=1;nmn<=lastm;nmn++)
  478.     {
  479.         var nmenu=eval("window.m"+nmn);
  480.         if(nmenu&&nmenu.activePopup)closePopup(nmenu,nmenu.activePopup.wid);
  481.     }
  482. }
  483.  
  484. function initializeMenu()
  485. {
  486.     if(docLoaded)return;
  487.     var nmn;
  488.     for(nmn=1;nmn<=lastm;nmn++)
  489.     {
  490.         var nmenu=eval("window.m"+nmn);
  491.         if(nmenu)
  492.         {
  493.             nmenu.popupFrame=(nmenu.sepFrame&&!nmenu.openSameFrame)?findFr(window.top,nmenu.contentFrame):window;
  494.             nmenu.targetFrame=(nmenu.sepFrame)?findFr(window.top,nmenu.cntFrame):window;
  495.             if(!nmenu.mout)addNewEvent(nmenu.popupFrame.document,"mousedown",onDocClick,false);
  496.         }
  497.     }
  498.     docLoaded=true;
  499. }
  500.  
  501. function addNewEvent(obj,event,fun,bubble)
  502. {
  503.     eval("obj.on"+event+"="+fun);
  504. }
  505.  
  506. function chgBg(item,color)
  507. {
  508. }
  509.  
  510. function initializeAll()
  511. {
  512.     var i;
  513.     for(i=0;i<=document.lastLoadHandler;i++)
  514.     {
  515.         eval(document.loadHandlers[i]+'();');
  516.     }
  517. }